home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
TECHNICA
/
COMPUTER
/
H254.ZIP
/
IRITSM3S.ZIP
/
IRIT
/
SOLID5.IRT
< prev
next >
Wrap
Text File
|
1992-02-25
|
1KB
|
61 lines
#
# This solid uses free form surfaces to create a rolling-pin. This
# file pushed the IBM PC version to its (memory) limits. Take <4 minutes
# on my 286 12MHz with 287.
# One could do it much easier as one surface of revolution.
# final = surfrev(T1 + -T2) should do it. The unary minus flips the curve
# and the add, chain them together into a single curve by adding a linear
# segment (practically the rolling pin itself) between them.
#
# Created by Gershon Elber, May 90
#
tm = time(true);
save_mat = view_mat;
view_mat = view_mat * scale( vector( 0.5, 0.5, 0.5 ) );
save_res = resolution;
# normal(TRUE, 0.1, YELLOW);
resolution = 12;
T1 = cbspline( 3,
list( ctlpt( E3, 0.25, 0.0, 1.0 ),
ctlpt( E3, 0.01, 0.0, 1.0 ),
ctlpt( E3, 0.04, 0.0, 1.1 ),
ctlpt( E3, 0.04, 0.0, 1.25 ),
ctlpt( E3, 0.04, 0.0, 1.3 ),
ctlpt( E3, 0.001, 0.0, 1.3 ) ),
list( 0, 0, 0, 1, 2, 3, 4, 4, 4 ) );
T1 = surfrev( T1 );
T2 = T1 * rotx( 180 );
T = gpolygon(list( T1, T2 ) );
free( T1 );
free( T2 );
interact( T, false );
resolution = 20;
T3 = cylin( vector( 0.0, 0.0, -2.0 ), vector( 0.0, 0.0, 4.0 ), 0.12 );
view( list( T3 ), false );
S1 = T3 * T;
free( T );
free( T3 );
final = convex( S1 );
free( S1 );
tm = time( false );
tm; # In Seconds
interact( list( final ), false );
save( "solid5", list( view_mat, final ) );
view_mat = save_mat;
resolution = save_res;